﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Telerik.Web.UI;
using System.Data.SqlClient;

public partial class Admin_UserControls_RoleManagement : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void RadTreeView1_PreRender(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            InitTreeRole(0, RadTreeView1.Nodes);
            RadTreeView1.ExpandAllNodes();
        }
    }

    protected void parent_idDropDownList1_PreRender(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            InitDropDownListParent(0, "");
        }
    }

    protected void InitTreeRole(int ParentID, RadTreeNodeCollection Nodes)
    {
        DataTable dt = Role.GetRoleByParent(ParentID);
        if (dt.Rows.Count > 0)
        {
            int i = 0;
            foreach (DataRow row in dt.Rows)
            {
                string text = row["role_name"].ToString();
                string value = row["role_id"].ToString();
                RadTreeNode node = new RadTreeNode(text, value);
                Nodes.Add(node);
                InitTreeRole(Convert.ToInt32(value), Nodes[i].Nodes);
                ++i;
            }
        }
    }

    protected void InitDropDownListParent(int ParentID, string Tab)
    {
        DataTable dt = Role.GetRoleByParent(ParentID);
        if (dt.Rows.Count > 0)
        {
            foreach (DataRow row in dt.Rows)
            {
                ListItem item = new ListItem(Tab + row["role_name"].ToString(), row["role_id"].ToString());
                parent_idDropDownList1.Items.Add(item);
                InitDropDownListParent(Convert.ToInt32(row["role_id"].ToString()), Tab + "..........");
            }
        }
    }

    protected void Button_new_Click(object sender, EventArgs e)
    {
        if (role_idLabel1.Text != "")
        {
            resultLabel.Text = "(*) Không thể thêm khi đang sửa! Bấm 'Quay lại'.";
            return;
        }
        Role role = new Role();
        role.Role_name = role_nameRadTextBox1.Text;
        role.Path = pathRadTextBox1.Text;
        role.Description = descriptionRadTextBox1.Text;
        role.Parent_id = Convert.ToInt32(parent_idDropDownList1.SelectedValue);
        try
        {
            Role.Insert(role);
        }
        catch (SqlException)
        {
            return;
        }
        resultLabel.Text = "(*) Thêm mới thành công!";
        ClearData();
    }

    protected void RadTreeView1_NodeClick(object sender, RadTreeNodeEventArgs e)
    {
        RadTreeNode node = (RadTreeNode)e.Node;
        int RoleID = Convert.ToInt32(node.Value);
        Role role = Role.GetInfo(RoleID);
        if (role.Parent_id == 0) 
        {
            resultLabel.Text = "(*) Không sửa nút gốc!";
            return;
        }
        role_idLabel1.Text = role.Role_id.ToString();
        role_nameRadTextBox1.Text = role.Role_name;
        pathRadTextBox1.Text = role.Path;
        descriptionRadTextBox1.Text = role.Description;
        parent_idDropDownList1.ClearSelection();
        ListItem li = parent_idDropDownList1.Items.FindByValue(role.Parent_id.ToString());
        if (li != null)
            li.Selected = true;
    }

    protected void ClearData()
    {
        role_idLabel1.Text = "";
        role_nameRadTextBox1.Text = "";
        pathRadTextBox1.Text = "";
        descriptionRadTextBox1.Text = "";
        parent_idDropDownList1.ClearSelection();
        parent_idDropDownList1.Items[0].Selected = true;
        RadTreeView1.Nodes.Clear();
        InitTreeRole(0, RadTreeView1.Nodes);
        RadTreeView1.ExpandAllNodes();
    }

    protected void Button_edit_Click(object sender, EventArgs e)
    {

        if (role_idLabel1.Text == "")
        {
            resultLabel.Text = "(*) Không thể cập nhật khi đang thêm mới!";
            return;
        }
        int RoleID = Convert.ToInt32(role_idLabel1.Text);
        Role role = Role.GetInfo(RoleID);
        role.Role_name = role_nameRadTextBox1.Text;
        role.Path = pathRadTextBox1.Text;
        role.Description = descriptionRadTextBox1.Text;
        role.Parent_id = Convert.ToInt32(parent_idDropDownList1.SelectedValue);
        try
        {
            Role.Update(role);
        }
        catch (SqlException)
        {
            return;
        }
        resultLabel.Text = "(*) Cập nhật thành công!";
        ClearData();
    }
    protected void Button_cancel_Click(object sender, EventArgs e)
    {
        ClearData();
    }
    protected void Button_delete_Click(object sender, EventArgs e)
    {
        if (role_idLabel1.Text == "")
        {
            resultLabel.Text = "(*) Chọn để xóa!";
            return;
        }
        int RoleID = Convert.ToInt32(role_idLabel1.Text);
        try
        {
            Role.Delete(RoleID);
        }
        catch (SqlException)
        {
            return;
        }
        resultLabel.Text = "(*) Cập nhật thành công!";
        ClearData();
    }
}
